﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crosland.Automotriz.Seguridad.DataAccess;
using Crosland.Automotriz.Seguridad.Entity;
using System.Data;
using Crosland.Automotriz.Seguridad.ControlExeption;
using System.Data.SqlClient;

namespace Crosland.Automotriz.Seguridad.Business
{
    public class clsOpcionLogic
    {
        
        clsOpcionDAO opcionDAO = new clsOpcionDAO();
 
        public List<T_SEG_OPCION> listarTreaview() {

            return opcionDAO.listarTreaview();

        
        }



        public List<VW_GRUPO_OPCION> listarGrupoOpcion() {

            return opcionDAO.listarGrupoOpcion();
        
        
        }


        public List<int> ObtenerOpcionesPorGrupo(int idGrupo)
        {
            return opcionDAO.ObtenerOpcionesPorGrupo(idGrupo);
        }


        public List<int> ObtenerOpcionesPorGrupo2(int idGrupo)
        {
            return opcionDAO.ObtenerOpcionesPorGrupo2(idGrupo);
        }


        public int GrabarOpcion(T_SEG_OPCION Obj)
        {
            try
            {
                return opcionDAO.GrabarOpcion(Obj);
            }
            catch (EntityException sqlEx)
            {

                throw new RunException("ERROR AL INSERTAR EN T_SEG_OPCION", sqlEx);
            }
            catch (Exception ex)
            {
                throw new RunException("ERROR EN LA APLICACION POR FAVOR CONSULTE: ", ex);
            }  
        }


        public T_SEG_OPCION ObtenerOpciones(int idOpcion)
        {try{
            return opcionDAO.ObtenerOpciones(idOpcion);

             }
            catch (Exception ex)
            {
                throw new RunException("Error al listar en la Tabla T_SEG_OPCION ", ex);
            }
        }



        public List<T_SEG_OPCION> ListarOpciones()
        {try{
            return opcionDAO.ListarOpciones();

             }
            catch (Exception ex)
            {
                throw new RunException("Error al listar en la Tabla T_SEG_OPCION ", ex);
            }
        }


        public bool Eliminar(T_SEG_OPCION Obj)
        {
            return opcionDAO.Eliminar(Obj);
        }


        public int ObtenerIdOpcion()
        {
            return opcionDAO.ObtenerIdOpcion();
        }


        public int ObtenerNroElementosPorNodo(int? IdPadre)
        {
            return opcionDAO.ObtenerNroElementosPorNodo(IdPadre);
        }

        public bool Modificar(T_SEG_OPCION obj)
        {try{
            return opcionDAO.Modificar(obj);
              }
            catch (EntityException sqlEx)
            {

                throw new RunException("ERROR AL ACTUALIZAR EN T_SEG_OPCION", sqlEx);
            }
            catch (Exception ex)
            {
                throw new RunException("ERROR EN LA APLICACION POR FAVOR CONSULTE: ", ex);
            }  
        }

        public bool EliminarOpcionGrupo(int idOpcion)
        {
            try
            {
                return opcionDAO.EliminarOpcionGrupo(idOpcion);
            }
            catch (SqlException sqlEx) { throw new RunException("ERROR AL ELIMINAR EN  VW_GRUPO_OPCION", sqlEx); }
            catch (Exception ex) { throw new RunException("ERROR EN LA APLICACION POR FAVOR CONSULTE: ", ex); }
        }

        public List<VW_OPCION> ObtenerPorUsuario(string userName, int idPadre)
        {
            return opcionDAO.ObtenerPorUsuario(userName, idPadre);
        }

        public bool PA_insertarOpcionGrupo(int ID_GRUPO, int ID_OPCION) {
            try
            {
                return opcionDAO.PA_insertarOpcionGrupo(ID_GRUPO, ID_OPCION);
            }
            catch (SqlException sqlEx) { throw new RunException("ERROR EN EL PROCEDIMIENTO USP_SAVE_GRUPOOPCION", sqlEx); }
            catch (Exception ex) { throw new RunException("ERROR EN LA APLICACION POR FAVOR CONSULTE: ", ex); }

        }


        public IEnumerable<Object> listaArea() {

            return opcionDAO.listaArea();
        }

        public List<T_SEG_OPCION> listaOpcionesW() {

            return opcionDAO.listaOpcionesW();
        }
   
    }
        
    }

